#define  _CRT_SECURE_NO_WARNINGS 1
///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     struct ListNode *next;
// * };
// */
//struct ListNode* middleNode(struct ListNode* head) {
//    struct ListNode* slow = head, * fast = head;
//    while (1)
//    {
//        // if(head->next==NULL){
//        //     break;
//        // }
//        // if(head->next->next==NULL)
//        // {
//        //     slow=slow->next;
//        //     break;
//        // }
//       // slow=slow->next;
//        if (fast == NULL)break;
//        if (fast->next == NULL) {
//            break;
//        }
//        fast = fast->next;
//        if (fast->next == NULL)
//        {
//            slow = slow->next;
//            break;
//        }
//        fast = fast->next;
//        // if(fast->next==NULL)
//        // {
//        //     break;
//        // }
//        slow = slow->next;
//        if (fast->next == NULL)
//        {
//            break;
//        }
//    }
//    return slow;
//}

///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     struct ListNode *next;
// * };
// */
//
//
//struct ListNode* reverseList(struct ListNode* head) {
//
//    if (head == NULL)return head;
//    struct ListNode* slow = head, * fast = head->next;
//    slow->next = NULL;
//    while (fast)
//    {
//
//        struct ListNode* temp = fast->next;
//        fast->next = slow;
//        slow = fast;
//        fast = temp;
//    }
//    return slow;
//
//}

///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     struct ListNode *next;
// * };
// */
//struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
//    struct ListNode newNode = { 0,NULL };
//    struct ListNode* move = &newNode;
//    struct ListNode* move1 = list1, * move2 = list2;
//    while (move1 && move2)
//    {
//        if (move1->val < move2->val)
//        {
//            move->next = move1;
//            move = move->next;
//            move1 = move1->next;
//        }
//        else
//        {
//            move->next = move2;
//            move = move->next;
//            move2 = move2->next;
//        }
//    }
//    if (move1 == NULL)
//    {
//        while (move2)
//        {
//            move->next = move2;
//            move = move->next;
//            move2 = move2->next;
//        }
//    }
//    else
//    {
//        while (move1)
//        {
//            move->next = move1;
//            move = move->next;
//            move1 = move1->next;
//        }
//    }
//    move = NULL;
//    return newNode.next;
//}


//if (head = NULL)
//{
//	return head;
//}
struct ListNode rhead = NULL;
struct ListNode current = head, tmp = head->next;
while (current)
{
	//tmp = current->next;
	if (rhead == NULL)
	{
		current->next = NULL;
		rhead = current;
		current = tmp;
		if (tmp == NULL)break;
		tmp = tmp->next;
	}
	else
	{
		current->next = rhead;
		rhead = current;
		current = tmp;
		if (tmp = NULL)
			break;
		tmp = tmp->next;
	}


}